package chemtools_logica.BDL.SFBean;

import chemtools_logica.BDL.IL.BDL_SFOrdenproduccionLocal;
import chemtools_logica.BDL.IR.BDL_SFOrdenproduccionRemote;

import chemtools_logica.Beans.OrdenproduccionBean;

import chemtools_logica.Entidades.Medida;
import chemtools_logica.Entidades.Ordenproduccion;

import java.text.SimpleDateFormat;

import java.util.ArrayList;
import java.util.List;

import javax.annotation.Resource;

import javax.ejb.SessionContext;
import javax.ejb.Stateless;

import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

@Stateless(name = "BDL_SFOrdenproduccion", mappedName = "map-BDL_SFOrdenproduccion")
public class BDL_SFOrdenproduccionBean implements BDL_SFOrdenproduccionRemote, BDL_SFOrdenproduccionLocal {
    @Resource
    SessionContext sessionContext;
    @PersistenceContext(unitName = "Chemtools_Logica")
    private EntityManager em;

    public BDL_SFOrdenproduccionBean() {
    }

    public Ordenproduccion persistOrdenproduccion(Ordenproduccion ordenproduccion) {
        em.persist(ordenproduccion);
        return ordenproduccion;
    }

    public Ordenproduccion mergeOrdenproduccion(Ordenproduccion ordenproduccion) {
        return em.merge(ordenproduccion);
    }

    public void removeOrdenproduccion(Ordenproduccion ordenproduccion) {
        ordenproduccion = em.find(Ordenproduccion.class, ordenproduccion.getIdOrdenProduccion());
        em.remove(ordenproduccion);
    }
    
    public int insertOrdenProduc(Ordenproduccion ordenproduccion){
        em.persist(ordenproduccion);
        em.flush();
        int id = ordenproduccion.getIdOrdenProduccion();
        return id;
    }

    /** <code>select o from Ordenproduccion o</code> */
    @TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
    public List<Ordenproduccion> getOrdenproduccionFindAll() {
        return em.createNamedQuery("Ordenproduccion.findAll", Ordenproduccion.class).getResultList();
    }
    
    public List<Ordenproduccion> getAllOrdenProduccion(OrdenproduccionBean bean){
        List<Ordenproduccion> listaEntidad = new ArrayList<Ordenproduccion>();
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
        String ejb = "SELECT u FROM Ordenproduccion u WHERE 1=1 ";
        
        if(bean.getIdLaboratorio() != -1 ){
            ejb+="AND u.laboratorio.idLaboratorio = " + bean.getIdLaboratorio()+" ";
        }
        
        
        if(bean.getFechaRegistroDesde()!= null){
            ejb += "AND u.fechaRegistro >= '"+sdf.format(bean.getFechaRegistroDesde())+"' ";
        }
        
        if(bean.getFechaRegistroHasta() != null){
            ejb += "AND u.fechaRegistro <= '"+sdf.format(bean.getFechaRegistroHasta())+"' ";
        }
        
        if(bean.getEstado() != -1){
            ejb+="AND u.estado = " + bean.getEstado();
        }
        
        try{
            
            System.out.print(ejb);
        Query query = em.createQuery(ejb);
        listaEntidad = query.getResultList();
        }catch(Exception e){
        }
        return listaEntidad;
    }
    
    public boolean existeIDOrdenProduccion(int id){
        boolean exi = false;
     
        String ejb = "SELECT u FROM Ordenproduccion u WHERE u.idOrdenProduccion = "+id;
        
        List<Ordenproduccion> medida = new ArrayList<Ordenproduccion>();
        Query query = em.createQuery(ejb);
        medida = query.getResultList();
        
        if(medida.size() == 0){
            exi = true;
        }
        
        return exi;
    }
    

    public boolean labTieneOrdProd(int idLaboratorio) {
            String ejb = "SELECT u FROM Ordenproduccion u WHERE u.laboratorio.idLaboratorio = "+idLaboratorio;
        return em.createQuery(ejb).getResultList().size()>0;
        }
    /*
    public List<Ordenproduccion> ordenesxLab(int idLaboratorio) {
            String ejb = "SELECT u FROM Ordenproduccion u WHERE u.laboratorio.idLaboratorio = "+idLaboratorio;
        return em.createQuery(ejb,Ordenproduccion.class).getResultList();
        }
*/

    public List<Ordenproduccion> getOrdenProcById(OrdenproduccionBean bean){
        List<Ordenproduccion> listaEntidad = new ArrayList<Ordenproduccion>();
        
        String ejb = "SELECT u FROM Ordenproduccion u WHERE 1=1";
        
        if(bean.getIdOrdenProduccion() != 0 ){
            ejb+=" AND u.idOrdenProduccion = " + bean.getIdOrdenProduccion();
        }
        try{
        Query query = em.createQuery(ejb);
        listaEntidad = query.getResultList();
        }catch(Exception e){
        }
        return listaEntidad;
    }

    
    public List<Ordenproduccion> getAllOrdenProduccionAtivos(){
        List<Ordenproduccion> listaEntidad = new ArrayList<Ordenproduccion>();
        
        String ejb="SELECT u FROM Ordenproduccion u WHERE u.estado = 1";
        try{
            Query query = em.createQuery(ejb);
            listaEntidad = query.getResultList();
        }catch(Exception e){}
        
        return listaEntidad;
    }



}
